﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using BlueFinity.mvNET.CoreObjects;
using mvLibrary;
using mvLibrary.Helpers.BaseClass;
using mvLibrary.Helpers.Utils;

namespace fenk.Stock.Desarmes
{
    public partial class AltaDesarmes : BaseForm
    {
        private const string PRODUCTO_FILENAME = "PRODUCTOS";
        private const int PRODUCTOS_INDEX = 6;
        private const int CANTIDAD_INDEX = 7;
        private const int STOCK_DESARME_INDEX = 39;
        private const int CANCELADO_INDEX = 14;
        private bool previousCancelState;
        public AltaDesarmes()
        {
            InitializeComponent();
        }

        public override void AfterReadItem()
        {
            gpbBajaReserva.Visible = ItemStatus.Equals(Status.Update);
            previousCancelState = FenkUtils.GetBoolFromYesNoString(Item.get_Text(CANCELADO_INDEX));
            this.panelData.Enabled = !previousCancelState;
        }

        public override void AfterSaveItem()
        {
                bool isCancelOperation = !previousCancelState.Equals(chkCancelarReserva.Checked);
                
                var idProductos = Item.GetSplittedElementsFromAttribute(PRODUCTOS_INDEX);

                PickAccount.Login();
                int position = 0;
                foreach (var idProducto in idProductos)
                {

                    int cantidadProductoAnterior =
                        OldItem.GetIntValueFromAttributeInPosition(CANTIDAD_INDEX, position);

                    int cantidadProductoActual = !isCancelOperation ?
                        Item.GetIntValueFromAttributeInPosition(CANTIDAD_INDEX, position) : FenkUtils.ZERO;
                    
                    BasicMvItem producto = programCaller.GetItemById(PickAccount, idProducto, PRODUCTO_FILENAME);
                    int stockDesarme = Convert.ToInt32(producto.GetAttribute(STOCK_DESARME_INDEX));

                    producto.SetAttribute(STOCK_DESARME_INDEX, stockDesarme - cantidadProductoAnterior + cantidadProductoActual);
                    string productoString = producto.ToString;

                    programCaller.SaveItem(PickAccount, productoString, idProducto, PRODUCTO_FILENAME, User);
                    position++;
                }

                PickAccount.Logout();
            
        }

    }
}
